package com.pine.dbant.common.plugin.meta;

import com.pine.dbant.common.model.ITree;

import java.util.HashMap;
import java.util.Map;

/**
 * @author xiaoyuan
 * @create 2022/11/17
 **/
public interface MetadataNode extends ITree<MetadataNode, String> {

    /**
     * 设置名字
     *
     * @param id
     */
    MetadataNode setId(String id);


    /**
     * 名字
     *
     * @return
     */
    String getName();

    /**
     * 设置名字
     *
     * @param name
     */
    MetadataNode setName(String name);

    /**
     * 类型
     *
     * @return
     */
    String getType();

    /**
     * 设置类型
     *
     * @param type
     */
    MetadataNode setType(String type);


    /**
     * 添加参数
     *
     * @param key
     * @param value
     * @return
     */
    MetadataNode addProperty(String key, Object value);


    /**
     * 添加参数
     *
     * @param properties
     * @return
     */
    MetadataNode addProperties(Map<String,Object> properties);

    /**
     * 设置父id
     *
     * @param parentId
     * @return
     */
    MetadataNode setParentId(String parentId);


    /**
     * 判断是否是叶子节点
     * @return
     */
    Boolean getLeaf();

    /**
     * 设置是否是叶子节点
     * @param leaf
     * @return
     */
    MetadataNode setLeaf(Boolean leaf);

    /**
     * 其他携带参数
     *
     * @return
     */
    default Map<String, Object> getProperties() {
        return new HashMap<>();
    }


}
